package com.linkgie.galaxyframework.templating;

import java.util.Set;

public interface DataContext {

	/**
	 * 检测是否包含指定的属性；
	 */
	boolean containsProperty(String name);

	/**
	 * 属性名列表；
	 */
	Set<String> getPropertyNames();

	/**
	 * 属性值；
	 */
	Object getPropertyValue(String name);

	/**
	 * 以上下文对象返回指定属性的值；
	 */
	DataContext getPropertyAsContext(final String name);

	/**
	 * 返回上下文表示的数据类型；
	 * 
	 * @return
	 */
	Class<?> getDataClass();

	/**
	 * 返回上下文表示的数据对象；
	 * <p>
	 * 数据对象是 {@link #getDataClass()} 数据类型的实例；
	 * 
	 * @return
	 */
	Object getDataObject();
}